/**
* WS-Attacker - A Modular Web Services Penetration Testing Framework Copyright
* (C) 2014 Christian Mainka
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package wsattacker.http.transport;
import java.io.*;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLException;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.http.client.HttpClient;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.conn.ssl.X509HostnameVerifier;
import org.apache.http.impl.client.DefaultHttpClient;
public class TlsWrapperClient
{
public static HttpClient wrapClient( HttpClient base )
{
try
{
SSLContext ctx = SSLContext.getInstance( "TLS" );
X509TrustManager tm = new X509TrustManager()
{
public void checkClientTrusted( X509Certificate[] xcs, String string )
throws CertificateException
{
}
public void checkServerTrusted( X509Certificate[] xcs, String string )
throws CertificateException
{
}
public X509Certificate[] getAcceptedIssuers()
{
return null;
}
};
X509HostnameVerifier verifier = new X509HostnameVerifier()
{
@Override
public void verify( String string, X509Certificate xc )
throws SSLException
{
}
@Override
public void verify( String string, String[] strings, String[] strings1 )
throws SSLException
{
}
@Override
public boolean verify( String string, SSLSession ssls )
{
return true;
}
@Override
public void verify( String string, SSLSocket ssls )
throws IOException
{
}
};
ctx.init( null, new TrustManager[] { tm }, null );
SSLSocketFactory ssf = new SSLSocketFactory( ctx );
ssf.setHostnameVerifier( verifier );
ClientConnectionManager ccm = base.getConnectionManager();
SchemeRegistry sr = ccm.getSchemeRegistry();
sr.register( new Scheme( "https", ssf, 443 ) );
return new DefaultHttpClient( ccm, base.getParams() );
}
catch ( NoSuchAlgorithmException ex )
{
return null;
}
catch ( KeyManagementException ex )
{
return null;
}
}
}